This invention involves the management of a data dictionary in a computer system and the system objects that it tracks. A data dictionary is defined in the IBM Dictionary of Computing as "[a] centralized repository of information about data such as meaning, relationships to other data, origin, usage, and format." As such, a data dictionary is not unlike the standard dictionary of a spoken language (e.g., Webster's Collegiate Dictionary). Both the data dictionary and the standard dictionary contain information about certain items. The difference between the two concepts is the type of items that are involved. The items of interest in the standard dictionary are words; whereas, the items of interest in the data dictionary are called objects. An object can be a particular file or record, an instance of software (i.e., a program), or some other important system resource. The data dictionary is used by the computer system to keep track of the status of these important system resources. The benefit of using a data dictionary is, in a word, control. Ideally, the exact status of every system resource is known at all times. With this control, however, is the associated problem of ensuring that the data dictionary has current information regarding every object. To analogize this situation to that of the standard dictionary, one need only consider the importance of having an up to date dictionary. Newer words and/or definitions are often lacking in older dictionaries. As the dictionary becomes more and more out of date, it becomes less and less valuable. The problem is amplified in data dictionaries because, as opposed to words, the computer system's objects are constantly being modified.
To deal with this problem, typical data dictionary designs include various built-in mechanisms that perform both the modification of the objects and the associated change to the data dictionary. That is, when a user or an application program requires that a change be made to a particular object, an interface to the data dictionary is used to make the change. Then, an internal mechanism of the data dictionary will automatically make the associated dictionary changes. The problem with these current implementations is that to be kept active, they require that all modifications be carried out through their built-in utilities. This results in decreased flexibility. Application programs are limited to potentially inadequate mechanisms to access various system resources. Further, since data dictionary utilities must themselves gain access to system resources through operating system utilities, overall system performance is adversely affected.
Another problem inherent in existing data dictionary designs is the exposure to massive inaccuracies. Since existing data dictionary designs require that all changes to dictionary defined objects be made through built-in utilities, they are not aware of changes which occur outside of their sphere of control. This means that when changes of this type do occur, the data dictionary cannot be depended upon as an accurate reflection of the state of system objects. This problem is amplified when one considers that in some cases the only solution is a time consuming system reload which in and of itself may result in the loss of data.